<?php
namespace crontab;

use app\service\OrderBillService;
use app\service\OrderPeriodProcessService;
use app\service\OrderService;
use support\facade\Logger;
use Workerman\Crontab\Crontab;

class Task
{
    public function onWorkerStart()
    {

//        // 每秒钟执行一次
//        new Crontab('*/10 * * * * *', function(){
//            Logger::app('秒级任务:开始');
//
//            Logger::app('秒级任务:结束');
//        });

        // 每5分钟执行一次
        new Crontab('0 */5 * * * *', function(){
            Logger::app('每5分钟任务:开始');
            Logger::app('每5分钟任务:自动维护待关闭订单启动');
            OrderService::batchCloseUnpaidOrder();
            Logger::app('每5分钟任务:结束');
        });

        // 每30分钟执行一次
        new Crontab('0 */30 * * * *', function(){
            Logger::app('每30分钟任务:开始');
            Logger::app('每30分钟任务:确认分账操作启动');
            OrderBillService::confirmOrderProfit();
            Logger::app('每30分钟任务:结束');
        });

        //每日8点执行一次
        new Crontab('0 8 * * *', function(){
            Logger::app('每日8点任务:开始');
            Logger::app('每日8点任务:自动更新可设置已消费订单启动');
            //自动更新可设置已消费订单
            $ret=OrderService::autoUpdateAllowFinishOrders();
            Logger::app('每日8点任务:自动更新可设置已消费订单','info',[$ret]);

            Logger::app('每日8点任务:结束');
        });

        //每日0点10分执行一次
        new Crontab('10 0 * * *', function(){
            Logger::app('每日0点10分任务:开始');

            Logger::app('每日0点10分任务:启动成团检测');
            $ret=OrderPeriodProcessService::clusterDetection();
            Logger::app('每日0点10分任务:启动成团检测结果','info',[$ret]);

            Logger::app('每日0点10分任务:结束');
        });

        //每日1点执行一次
        new Crontab('0 1 * * *', function(){
            Logger::app('每1点任务:开始');

            Logger::app('每日1点任务:生成对账单启动');
            $ret=OrderBillService::createOrderBill();
            Logger::app('每日1点任务:生成对账单','info',[$ret]);

            Logger::app('每日1点任务:结束');
        });

    }
}